// 三、基于下面提供的代码， 完成后续的四个练习
// 练习3： 实现一个函数ex3， 使用safeProp和fp.first找到user的名字的首字母
// app.js
const fp = require('lodash/fp')
const { Maybe, Container } = require('./common/support')
// 柯里化一个函子
let safeProp = fp.curry(function(x, o) {
    return Maybe.of(o[x])
})

const trace = function(tag, val) {
    console.log(tag, val)
    return val
}

let user = {id: 2, name: 'Albert'}
let ex3 = data => {
    // 需要实现的函数
    // 首先得到user的name属性的函子
    let propValue = safeProp('name', data)
    // 再通过fp.first得到首字母
    return propValue.map(fp.first)
}
let result = ex3(user)
// 执行函数得到函子返回的值
console.log(result._value)